home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Almathera Ten Pack 3: CDPD 3
/
Almathera Ten on Ten - Disc 3: CDPD3.iso
/
scope
/
001-025
/
scopedisk11
/
cprof12
/
p-sieve.c
next >
Wrap
C/C++ Source or Header
|
1995-03-18
|
1KB
|
82 lines
#define _PROFILER_
extern long *_P_COUNT;
long _P_ONEXIT();
void _P_STOPWATCH(unsigned long,unsigned long,
unsigned long *,unsigned long *,unsigned long *);
long _P_ACCESS(long);
#define _P_DUMP 1
#define _P_CLEAR 0
/*****************************************************************************
***
*** The Sieve of Eratosthenes
***
***/
#include "time.h"
#include "stdio.h"
#define size 8190
unsigned char flag[size+1];
void main()
{
register int i,k,p,primes;
int iter;
long t1,t2;
static unsigned long _P_FCN_SECS=0,_P_FCN_MICROS=0,
_P_FCN_DEPTH=0;
_P_PROFILE_SETUP();
_P_STOPWATCH(1,0,&_P_FCN_SECS,&_P_FCN_MICROS,&_P_FCN_DEPTH);
onexit(&_P_ONEXIT);
(*(_P_COUNT+1))++;
time(&t1);
for (iter=1;iter<=100;iter++)
{
(*(_P_COUNT+2))++;
for (i=0;i<=size;i++)
{(*(_P_COUNT+3))++;
flag[i]=1;
}/*_P_*/
(*(_P_COUNT+4))++;
primes=0;
for (i=0;i<=size;i++)
{
(*(_P_COUNT+5))++;
if (flag[i]==1)
{
(*(_P_COUNT+6))++;
p=i+i+3;
for(k=i+p;k<=size;k+=p)
{(*(_P_COUNT+7))++;
flag[k]=0;
}/*_P_*/
(*(_P_COUNT+8))++;
primes++;
}
(*(_P_COUNT+9))++;
}
(*(_P_COUNT+10))++;
}
(*(_P_COUNT+11))++;
time(&t2);
printf("primes=%d in %ld seconds for 100 iterations\n",primes,(t2-t1));
_P_STOPWATCH(0,0,&_P_FCN_SECS,&_P_FCN_MICROS,&_P_FCN_DEPTH);
}
/*_P_FCN_*/
_P_PROFILE_SETUP(){_P_PROFILE_INIT(12,1);}